package com.bruce.tool.pay.alipay.app.to;


import lombok.Data;

import javax.validation.constraints.NotBlank;
import java.io.Serializable;

/**
 * @author Bruce(刘正航)
 */
@Data
public class AppPayAliTo implements Serializable {
    @NotBlank(message = "支付标题(subject)不能为空")
    private String subject;
    @NotBlank(message = "支付单号(orderNo)不能为空")
    private String orderNo;
    @NotBlank(message = "支付金额(totalAmount)不能为空")
    private String totalAmount;
    /**
     * 公用回传参数，如果请求时传递了该参数，则返回给商户时会回传该参数。支付宝会在异步通知时将该参数原样返回。本参数必须进行 UrlEncode 之后才可以发送给支付宝
     */
    private String passback;
    /**
     * 该笔订单允许的最晚付款时间，逾期将关闭交易。取值范围：1m～15d。m-分钟，h-小时，d-天，1c-当天（1c-当天的情况下，无论交易何时创建，都在0点关闭）。 该参数数值不接受小数点， 如 1.5h，可转换为 90m。
     * 注：若为空，则默认为15d。
     */
    private String timeoutExpress;
    /**
     * goods_type=0,虚拟商品,不能用花呗,goods_type=1而虚拟商品,可以用花呗
     */
    private Integer goodsType = 0;

    public static AppPayAliTo translate(String subject, String orderNo, String totalAmount) {
        AppPayAliTo to = new AppPayAliTo();
        to.setSubject(subject);
        to.setOrderNo(orderNo);
        to.setTotalAmount(totalAmount);
        return to;
    }

    public static AppPayAliTo translate(String subject, String orderNo, String totalAmount, String passback) {
        AppPayAliTo to = new AppPayAliTo();
        to.setSubject(subject);
        to.setOrderNo(orderNo);
        to.setTotalAmount(totalAmount);
        to.setPassback(passback);
        return to;
    }
}
